// network/request.js

// 定义一个名为 `request` 的函数，用于封装所有网络请求逻辑。
// 该函数接受一个 `options` 对象作为参数，这个对象包含了发起请求所需的所有配置信息。
function request(options) {
  // 检查 `options.header` 是否存在。如果不存在，则初始化为空对象。
  // 这样可以确保即使用户没有提供 `header`，我们仍然可以安全地操作它。
  // options.header = options.header || {};
  // 在请求头中添加token，但只有在token存在时才添加
  const token = wx.getStorageSync('token');
  console.log("token为",token)
  if (token) {
    options.header = {
      ...options.header, // 保留用户传入的header
      'token': token
    };
  }
  // 返回一个新的 Promise，以便我们可以使用 `.then()` 和 `.catch()` 来处理异步操作。
  return new Promise((resolve, reject) => {
    // 用于发起 HTTP 请求。我们将 `options` 对象展开（`...options`），这样可以将所有传入的配置传递给 `wx.request`。
    wx.request({
      ...options,
      success: (response) => {
        // 当请求成功时，`success` 回调函数会被调用。`response` 包含服务器返回的数据。
        // 检查响应中的 `code` 字段。假设 `600` 表示未登录或 Token 无效。
        if (response.data.code === 600) {
          console.log("未登录");
          // 显示一个提示框，告知用户 Token 无效或未登录。
          wx.showToast({
            title: response.data.msg, // 提示框的内容来自服务器返回的消息
            icon: 'none' // 不显示图标
          });
          // 跳转到登录页面。`wx.reLaunch` 会关闭所有页面，打开到指定的页面。
          // 这里假设 `/pages/login/login` 是登录页面的路径。
          wx.reLaunch({
            url: '/pages/mine_detail/login/login'
          });

          // 结束当前的回调函数，不再执行后续代码。
          return;
        }
        // 如果响应状态码不是 600，则认为请求成功，解析并返回响应数据。
        resolve(response.data);
      },
      fail: (error) => {
        // 当请求失败时，`fail` 回调函数会被调用。`error` 包含错误信息。
        // 记录错误日志，方便调试。
        console.error("请求失败：", error);
        // 拒绝当前的 Promise，触发 `.catch()` 处理程序。
        reject(error);
      }
    });
  });
}

// 将 `request` 函数导出，以便其他文件可以通过 `require` 导入并使用它。
module.exports = {
  request: request
};